/*
 * Created by LiuYou on 2020/11/26.
 *
 */

#ifndef EFFECTIVECPP_GRAPHICSCARD_HPP
#define EFFECTIVECPP_GRAPHICSCARD_HPP


#include <memory>
#include <ostream>

namespace pc {
    namespace graphicscard {
        class GraphicsCardImpl;

        class GraphicsCard {
        public:
            explicit GraphicsCard(const std::shared_ptr<GraphicsCardImpl>& pImpl);

            const std::shared_ptr<GraphicsCardImpl>& getPImpl() const;

            friend std::ostream& operator<<(std::ostream& os, const GraphicsCard& card);

        private:
            std::shared_ptr<GraphicsCardImpl> pImpl;
        };

/******************************************************************************
    // TODO 关于友元函数/朋友
    //  在 vs 中没有这一行不会报错，不会有警告。
    //  但是，在 MinGW 中会有没有这一行声明就会有警告。
//    std::ostream& operator<<(std::ostream& os, const GraphicsCard& card);
 ******************************************************************************/








    }
}


#endif //EFFECTIVECPP_GRAPHICSCARD_HPP
